home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / coding / dsp / aib2xmpl.exe / AIC_C.ASM < prev    next >
Assembly Source File  |  1991-08-02  |  10KB  |  166 lines

  1. ;**************************************************************
  2. ;  
  3. ;                 aic_c.asm
  4. ;  
  5. ;                 Jeffrey Schwartz
  6. ;  
  7. ;                 08-02-91
  8. ;  
  9. ;           (C) Texas Instruments Inc., 1992 
  10. ;  
  11. ;           Refer to the file 'license.txt' included with this 
  12. ;           this package for usage and license information. 
  13. ;  
  14. ;**************************************************************
  15. ******************************************************************************
  16. *                                                                            *
  17. *                         TMS320C25 AIC LOOPBACK TEST                        *
  18. *                                                                            *
  19. * AUTHOR: Jeffrey Schwartz                                                   *
  20. *         DSP Applications                                                   *
  21. *         Texas Instruments                                                  *
  22. *                                                                            *
  23. * THIS PROGRAM READS A VALUE FROM THE AIC AND WRITES IT BACK OUT TO THE AIC. *
  24. *                                                                            *
  25. * SINCE THIS EXAMPLE INCLUDES ASSEMBLY AND C CODE, THE MAKEFILE MUST COMBINE *
  26. * THE TWO, AS IS DONE IN LOOPBACK.MAK .  THE .CMD FILE MUST BE USED TO       *
  27. * ALLOCATE THE "ORG" SECTION.  ORG, IN THIS CASE, IS A SIMPLIFIED INTERRUPT  *
  28. * VECTOR TABLE.                                                              *
  29. *                                                                            *
  30. * THE ASSEMBLY CODE CONTAINS TWO FUNCTIONS FOR TRANSCEIVING DATA, TCV_DAT,   *
  31. * AND TCV_DAT_CONF.  TCV_DAT TRANSMITS THE DATA, SHIFTED TWO BITS TO THE     *
  32. * LEFT SO THAT THE SIGNAL IS UNDERSTOOD AS DATA.  IF NOT, THE LOWER 2 LSBS   *
  33. * COULD BE CONFUSED AS AIC CONTROL BITS, CAUSING THE PROGRAM TO CRASH.       *
  34. * TCV_DAT_CONF ALLOWS FOR CONFIGURATION OF THE AIC, AS WELL AS TRANSCEIVING  *
  35. * OF DATA.  CONFIGURATION INVOLVES SECONDARY COMMUNICATION, WHICH IS         *
  36. * SIGNALED BY A WORD WITH THE LAST 2 LSBS SET HIGH.  THE CONFIGURATIONS      *
  37. * WHICH ARE PERFORMED IN AIC_CC.C ARE BYPASSING THE BANDPASS FILTER          *
  38. * (tcv_dat_conf(0,0xE3); AND SETTING THE VALUES OF TA, RA, TB, AND RB        *
  39. * (tcv_dat_conf(a, (tb<<9) + (ra<<2) + 0)).  FOR MORE INFORMATION, SEE       *
  40. * LINEAR CIRCUITS VOLUME 2 DATA ACQUISITION AND CONVERSION, PP. 2-247 -      *
  41. * 2-276.                                                                     *
  42. *                                                                            *
  43. * VARIOUS SETTINGS OF JUMPERS E8 AND E9 CAN BE USED TO ALLOW THE INPUT AND   *
  44. * OUTPUT SIGNALS TO BE WRITTEN TO AND READ FROM DIFFERENT AUDIO CONNECTOR    *
  45. * JACKS.  THE SETTINGS BELOW WORK WITH THE INPUT AT SIGNAL NODE CAIN (P3),   *
  46. * AND THE OUTPUT AT NODE COUT (P4).                                          *
  47. *                                                                            *
  48. * WITHOUT PROPER SETTING OF THE OTHER JUMPERS, THE AIB2 MAY NOT WORK WITH    *
  49. * THIS PROGRAM.  THE PROPER SETTINGS ARE AS FOLLOWS:                         *
  50. *                                                                            *
  51. *                                                                            *
  52. *        AIB2 JUMPER SETTINGS                                                *
  53. * JUMPER   SETTING     JUMPER DESCRIPTION                                    *
  54. *   E1       OFF       ;MC/MP select A=MP(Vcc) B=MC(GND) >> WARNING! <<      *
  55. *   E2       A         ;A:INT0, B:INT1, C:INT2                               *
  56. *   E3      B-C        ;A:BIOZ, B:INT , C:Use C17 and AIC together           *
  57. *   E4       A         ;A:End of conversion, B:Sample rate clock             *
  58. *   E5       B         ;A:Bypass S/H, B:Use sample and hold                  *
  59. *   E6       A         ;A:20V range, B:10V range                             *
  60. *   E7       ON        ;ON:Connects analog and digital ground                *
  61. *   E8       A         ;A:A/D for input, B:Codec/AIC for input               *
  62. *   E9       OFF       ;A:Input anti-alias filter, B:Bypass anti-alias       *
  63. *  E10       OFF       ;ON:Connect Vcc to C10/15                             *
  64. *  E11       A         ;EPROM type select (see AIB manual)                   *
  65. *  E12       A         ;A:Start conv. on sample rate clk, B:start on A/D read*
  66. *  E13       A         ;EPROM type select (see AIB manual)                   *
  67. *  E14       OFF       ;If installed, supplies 8khz frame synch to CODEC     *
  68. *  E15       A         ;EPROM type select (see AIB manual)                   *
  69. *  E16       OFF       ;If installed, supplies 2.048 Mhz clock to CODEC      *
  70. *  E17       OFF       ;ON: AIC in byte mode  OFF:AIC in word mode           *
  71. *  E18       OFF       ;ON: ties FSR & FSX together for CODEC operation      *
  72. *  E19       OFF       ;ON: ties FSR & FSX to C17 FSR                        *
  73. *  E20       B         ;A:select audio power amp  B:bypass amplifier         *
  74. *  E21       A or B    ;A:bypass smoothing filter for P2 output B: add filter*
  75. *  E22       B         ;A:16 bit DAC as P2 output B:CODEC/AIC as output      *
  76. *  E23       OFF       ;A:generate clock B:use emulator clock                *
  77. *  E24       ON        ;ON:1 I/O wait state   OFF:No I/O wait state          *
  78. *  E25       OFF       ;ON:use program wait states OFF:No program wait states*
  79. *  E26       OFF       ;ON:2 program wait states OFF:0 or 1 prog wait states *
  80. *  E27       OFF       ;ON:2 I/O wait states OFF:1 or 2 I/O wait states      *
  81. *  E28       ON        ;ON:connects V+ to TB1  OFF:disconnects V+            *
  82. *  E29       ON        ;ON:connects V- to TB1  OFF:disconnects V-            *
  83. *  E30       B         ;A:Use 2792 EPROM  B:standard EPROM                   *
  84. *  E31       B         ;A:Use 2792 EPROM  B:standard EPROM                   *
  85. *  E32       B         ;A:Use 2792 EPROM  B:standard EPROM                   *
  86. *  E33       B         ;A:Use 2792 EPROM  B:standard EPROM                   *
  87. *  E34       OFF       ;ON:connects DX0 and DX1 of C17 (second serial port)  *
  88. *  E35       OFF       ;ON:connects DR0 and DR1 of C17 (second serial port)  *
  89. *                                                                            *
  90. *  NOTE THAT SOME OF THESE SETTINGS, SUCH AS THOSE FOR EPROM CONFIGURATION   *
  91. *  ARE UNNECESSARY FOR THIS APPLICATION.                                     *
  92. ******************************************************************************
  93.  
  94. IMR             .set   04h           ; INTERRUPT MASK REGISTER
  95. DXR             .set   01h           ; DATA TRANSMIT REGISTER
  96. DRR             .set    0h           ; DATA RECEIVE REGISTER
  97.  
  98.                 .global _tcv_dat
  99.                 .global _tcv_dat_conf
  100.                 .global _dint
  101.                 .global _eint
  102.  
  103.                 .sect  "ORG"
  104.                 B       0200h        ; RESET VECTOR
  105.                 B       0            ; RESET VECTOR
  106.                 B       0            ; RESET VECTOR
  107.                 B       0            ; RESET VECTOR
  108.                 .space  16*16
  109.                 B       0            ; RESET VECTOR
  110.                 NOP                  ; SIMPLIFIED RINT SERVICE ROUTINE
  111.                 RET
  112.                 NOP                  ; SIMPLIFIED XINT SERVICE ROUTINE
  113.                 RET
  114.                 B       0            ; RESET VECTOR
  115.  
  116.                 .text
  117.  
  118. * THE INITIAL UNDERSCORE ALLOWS C-CALLABILITY
  119.  
  120. _dint:          DINT               ; C-CALLABLE INTERRUPT DISABLER
  121.                 RET
  122.  
  123. _eint:          EINT               ; C-CALLABLE INTERRUPT ENABLER
  124.                 RET
  125.  
  126. _tcv_dat_conf
  127.                 SFSM               ; SET FRAME SYNC MODE (EXTERNAL FSR-)
  128.                 RTXM               ; RESET TRANSMIT MODE (FSX- INPUT)
  129.                 FORT    0          ; SET 16-BIT WORDS
  130.                 SSXM               ; SET SIGN EXTENSION MODE
  131.                 SST     *-         ; STORE ST0
  132.                 LDPK    0          ; IMR IS ON DATA PAGE 0
  133.                 LACK    020h       ; 020h IS THE MASK THAT ALLOWS XINT
  134.                 SACL    IMR        ; STORE THE MASK IN THE IMR
  135.                 LAC     *-, 2      ; SEND OUT DATA WITH AIC COMMAND
  136.                 ORK     03h        ; FOR SECONDARY COMMUNICATION
  137.                 SACL    DXR        ; STORE IN THE DATA TRANSMIT REGISTER
  138.                 IDLE               ; WAIT FOR XINT AFTER COMPLETE TRANSMISSION
  139.                 LAC     *+         ; LOAD ACCUMULATOR WITH SECONDARY WORD
  140.                 SACL    DXR        ; START SECONDARY TRANSMISSION
  141.                 IDLE               ; WAIT FOR XINT AFTER COMPLETE TRANSMISSION
  142.                 ZAC                ; ZERO THE ACCUMULATOR
  143.                 SACL    IMR        ; CLEAR IMR
  144.                 LAC     DRR        ; DATA FROM A/D IS IN UPPER 14 MSBS
  145.                 SFR                ; SHIFT RIGHT TWICE TO
  146.                 SFR                ; PUT DATA BACK INTO INTEGER FORM
  147.                 MAR     *+         ; POINT AR0 TO WHERE ST0 IS STORED
  148.                 LST     *          ; RESTORE ST0
  149.                 RET                ; RETURN TO C
  150.  
  151. _tcv_dat        SST     *-         ; STORE ST0
  152.                 LDPK    0          ; IMR IS IN DATA PAGE 0
  153.                 LACK    020h       ; 020h IS THE MASK FOR XINT
  154.                 SACL    IMR        ; MASK IMR FOR XINT
  155.                 LAC     *+, 2      ; SHIFT DATA LEFT BY 2 TO DENOTE DATA
  156.                 SACL    DXR        ; TRANSMIT DATA
  157.                 IDLE               ; WAIT FOR XINT
  158.                 ZAC                ; ZERO THE ACCUMULATOR
  159.                 SACL    IMR        ; CLEAR IMR
  160.                 LAC     DRR        ; DATA FROM A/D IS IN UPPER 14 MSBS
  161.                 SFR                ; SHIFT RIGHT TWICE TO
  162.                 SFR                ; PUT DATA BACK INTO INTEGER FORM
  163.                 LST     *          ; RESTORE ST0
  164.                 RET                ; RETURN TO C
  165.                 .end
  166.